A single computing system may host multiple virtual machines. Virtual machines may run independently (i.e., without knowing about other virtual machines on the system) and, when contending for resources, may overload their system with resource requests. For example, when virtual machines initiate security scans at the same time (known as an AV storm), the workload generated on the underlying system may be substantial, potentially causing delays in critical applications and processes. Other events, such as database backups, may cause similar problems. Resource contention management systems may attempt to mitigate performance loss in a variety of ways, but some may not work effectively (as can be the case with AV storms), and others may involve tedious and resource-intensive coordination. For example, to prevent hardware overload in an AV storm, each virtual machine may have to communicate with every other virtual machine about when to run security scans, or a user may have to configure each virtual machine manually. The former can incur performance overhead, and the latter may consume a significant amount of an administrator's time.
What is needed, therefore, is a more efficient and effective mechanism for managing resources shared among virtual machines.